Thumb_options

Contents|Index|Previous|Next
ARM THUMB options

The following‘`-m`’ options are available on THUMB architectures.

`-mthumb-interwork`

Generate code which supports calling between the THUMB and ARM instruction sets. Without this option, the two instruction sets cannot be reliably used inside one program. The default is ‘`-mno-thumb-interwork`’, since slightly smaller code is generated with this option.

`-mtpcs-frame`

Generate a stack frame that is compliant with the THUMB Procedure Call Standard (TPCS; hence, `tpcs`) for all non-leaf functions. (A leaf function is one that does not call any other functions). The default is ‘`-mno-apcs-frame`’.

`-mtpcs-leaf-frame`

Generate a stack frame that is compliant with the THUMB Procedure Call Standard (TPCS; hence, `tpcs`) for all leaf functions. (A leaf function is one that does not call any other functions). The default is ‘`-mno-apcs-leaf-frame`’.

`-mlittle-endian`

Generate code for a processor running in little-endian mode. This is the default for all standard configurations.

`-mbig-endian`

Generate code for a processor running in big-endian mode.

`-mstructure-size-boundary=<n>`

The size of all structures and unions will be rounded up to a multiple of the number of bits (`n`) set by this option. Permissable values are 8 and 32. The default value varies for different toolchains. For the COFF targeted toolchain, the default value is 8. Specifying the larger number can produced faster, more effcient code, but can also increase the size of the program. The two values are potentially incompatible. Code compiled with one value cannot necessarily expect to work with code or libraries compiled with the other value, if they exchange information using structures or unions. Programmers are encouraged to use the 32 value as future versions of the toolchain may default to this value.

`-mnop-fun-dllimport`

Disable the support for the dllimport attribute.

`-mcallee-super-interworking`

Gives all externally visible functions in the file being compiled an ARM instruction set header which switches to Thumb mode before executing the rest of the function. This allows these functions to be called from non-interworking code.

`-mcaller-super-interworking`

Allows calls via function pointers (including virtual functions) to execute correctly regardless of whether the target code has been compiled for interworking or not. There is a small overhead in the cost of executing a function pointer if this option is enabled.

Top|Contents|Index|Previous|Next